home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_oth / fifth21 / asm.fiv < prev    next >
Text File  |  1986-04-23  |  28KB  |  1,225 lines

  1. CREATE X
  2. CREATE Y
  3. EDIT
  4. : y
  5.   base @ 16 base ! over c@ . base ! 1+ ;
  6. ~UP
  7. CREATE THEN
  8. EDIT
  9. : then ['] endif execute ; immediate
  10. ~UP
  11. CREATE 0<>
  12. EDIT
  13. : 0<> 0= not ;
  14. ~UP
  15. CREATE -ROT
  16. EDIT
  17. : -ROT
  18.   stack abc|cab
  19. ;
  20. ~UP
  21. CREATE ROT
  22. EDIT
  23. : ROT
  24.   stack abc|bca
  25. ;
  26. ~UP
  27. CREATE 2DUP
  28. EDIT
  29. : 2dup
  30.   stack ab|abab
  31. ;
  32. ~UP
  33. CREATE NIP
  34. EDIT
  35. : nip stack ab|b ;
  36. ~UP
  37. CREATE ON
  38. EDIT
  39. \ Pure guess work
  40. : on -1 swap ! ;
  41. ~UP
  42. CREATE OFF
  43. EDIT
  44. \ Pure guess work
  45. : off 0 swap ! ;
  46. ~UP
  47. CREATE WITHIN
  48. EDIT
  49. \ (value min max - flag)
  50. : within
  51.   stack abc|abac 1+ < >r 1- > r> and
  52. ;
  53. ~UP
  54. CREATE 8086
  55. CREATE REG
  56. EDIT
  57. \ 8086 Assembler   Register Definitions     11OCT83HHL
  58. 8 base !
  59. : REG    11 * SWAP 1000 * OR CONSTANT   ;
  60. ~UP
  61. CREATE AL
  62. EDIT
  63. \ 8086 Assembler   Register Definitions     11OCT83HHL
  64. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  65. \ 10 0 REGS   AL  CL  DL  BL  AH  CH  DH  BH
  66. 0 0  reg al
  67. ~UP
  68. CREATE CL
  69. EDIT
  70. \ 8086 Assembler   Register Definitions     11OCT83HHL
  71. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  72. \ 10 0 REGS   AL  CL  DL  BL  AH  CH  DH  BH
  73. 0 1  reg cl
  74. ~UP
  75. CREATE DL
  76. EDIT
  77. \ 8086 Assembler   Register Definitions     11OCT83HHL
  78. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  79. \ 10 0 REGS   AL  CL  DL  BL  AH  CH  DH  BH
  80. 0 2  reg dl
  81. ~UP
  82. CREATE BL
  83. EDIT
  84. \ 8086 Assembler   Register Definitions     11OCT83HHL
  85. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  86. \ 10 0 REGS   AL  CL  DL  BL  AH  CH  DH  BH
  87. 0 3  reg bl
  88. ~UP
  89. CREATE AH
  90. EDIT
  91. \ 8086 Assembler   Register Definitions     11OCT83HHL
  92. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  93. \ 10 0 REGS   AL  CL  DL  BL  AH  CH  DH  BH
  94. 0 4  reg ah
  95. ~UP
  96. CREATE CH
  97. EDIT
  98. \ 8086 Assembler   Register Definitions     11OCT83HHL
  99. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  100. \ 10 0 REGS   AL  CL  DL  BL  AH  CH  DH  BH
  101. 0 5  reg ch
  102. ~UP
  103. CREATE DH
  104. EDIT
  105. \ 8086 Assembler   Register Definitions     11OCT83HHL
  106. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  107. \ 10 0 REGS   AL  CL  DL  BL  AH  CH  DH  BH
  108. 0 6  reg dh
  109. ~UP
  110. CREATE BH
  111. EDIT
  112. \ 8086 Assembler   Register Definitions     11OCT83HHL
  113. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  114. \ 10 0 REGS   AL  CL  DL  BL  AH  CH  DH  BH
  115. 0 7  reg bh
  116. ~UP
  117. CREATE AX
  118. EDIT
  119. \ 8086 Assembler   Register Definitions     11OCT83HHL
  120. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  121. \ 10 1 REGS   AX  CX  DX  BX  SP  BP  SI  DI
  122. 1 0  reg ax
  123. ~UP
  124. CREATE CX
  125. EDIT
  126. \ 8086 Assembler   Register Definitions     11OCT83HHL
  127. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  128. \ 10 1 REGS   AX  CX  DX  BX  SP  BP  SI  DI
  129. 1 1  reg cx
  130. ~UP
  131. CREATE DX
  132. EDIT
  133. \ 8086 Assembler   Register Definitions     11OCT83HHL
  134. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  135. \ 10 1 REGS   AX  CX  DX  BX  SP  BP  SI  DI
  136. 1 2  reg dx
  137. ~UP
  138. CREATE BX
  139. EDIT
  140. \ 8086 Assembler   Register Definitions     11OCT83HHL
  141. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  142. \ 10 1 REGS   AX  CX  DX  BX  SP  BP  SI  DI
  143. 1 3  reg bx
  144. ~UP
  145. CREATE SP
  146. EDIT
  147. \ 8086 Assembler   Register Definitions     11OCT83HHL
  148. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  149. \ 10 1 REGS   AX  CX  DX  BX  SP  BP  SI  DI
  150. 1 4  reg sp
  151. ~UP
  152. CREATE BP
  153. EDIT
  154. \ 8086 Assembler   Register Definitions     11OCT83HHL
  155. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  156. \ 10 1 REGS   AX  CX  DX  BX  SP  BP  SI  DI
  157. 1 5  reg bp
  158. ~UP
  159. CREATE SI
  160. EDIT
  161. \ 8086 Assembler   Register Definitions     11OCT83HHL
  162. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  163. \ 10 1 REGS   AX  CX  DX  BX  SP  BP  SI  DI
  164. 1 6  reg si
  165. ~UP
  166. CREATE DI
  167. EDIT
  168. \ 8086 Assembler   Register Definitions     11OCT83HHL
  169. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  170. \ 10 1 REGS   AX  CX  DX  BX  SP  BP  SI  DI
  171. 1 7  reg di
  172. ~UP
  173. CREATE [BX+SI]
  174. EDIT
  175. \ 8086 Assembler   Register Definitions     11OCT83HHL
  176. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  177. \ 10 2 REGS   [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]
  178. 2 0  reg [bx+si]
  179. ~UP
  180. CREATE [BX+DI]
  181. EDIT
  182. \ 8086 Assembler   Register Definitions     11OCT83HHL
  183. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  184. \ 10 2 REGS   [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]
  185. 2 1  reg [bx+di]
  186. ~UP
  187. CREATE [BP+SI]
  188. EDIT
  189. \ 8086 Assembler   Register Definitions     11OCT83HHL
  190. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  191. \ 10 2 REGS   [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]
  192. 2 2  reg [bp+si]
  193. ~UP
  194. CREATE [BP+DI]
  195. EDIT
  196. \ 8086 Assembler   Register Definitions     11OCT83HHL
  197. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  198. \ 10 2 REGS   [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]
  199. 2 3  reg [bp+di]
  200. ~UP
  201. CREATE [SI]
  202. EDIT
  203. \ 8086 Assembler   Register Definitions     11OCT83HHL
  204. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  205. \ 10 2 REGS   [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]
  206. 2 4  reg [si]
  207. ~UP
  208. CREATE [DI]
  209. EDIT
  210. \ 8086 Assembler   Register Definitions     11OCT83HHL
  211. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  212. \ 10 2 REGS   [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]
  213. 2 5  reg [di]
  214. ~UP
  215. CREATE [BP]
  216. EDIT
  217. \ 8086 Assembler   Register Definitions     11OCT83HHL
  218. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  219. \ 10 2 REGS   [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]
  220. 2 6  reg [bp]
  221. ~UP
  222. CREATE [BX]
  223. EDIT
  224. \ 8086 Assembler   Register Definitions     11OCT83HHL
  225. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  226. \ 10 2 REGS   [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]
  227. 2 7  reg [bx]
  228. ~UP
  229. CREATE [SI+BX]
  230. EDIT
  231. \ 8086 Assembler   Register Definitions     11OCT83HHL
  232. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  233. \ 4 2 REGS   [SI+BX] [DI+BX] [SI+BP] [DI+BP]
  234. 2 0 reg [si+bx]
  235. ~UP
  236. CREATE [DI+BX]
  237. EDIT
  238. \ 8086 Assembler   Register Definitions     11OCT83HHL
  239. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  240. \ 4 2 REGS   [SI+BX] [DI+BX] [SI+BP] [DI+BP]
  241. 2 1 reg [di+bx]
  242. ~UP
  243. CREATE [SI+BP]
  244. EDIT
  245. \ 8086 Assembler   Register Definitions     11OCT83HHL
  246. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  247. \ 4 2 REGS   [SI+BX] [DI+BX] [SI+BP] [DI+BP]
  248. 2 2 reg [si+bp]
  249. ~UP
  250. CREATE [DI+BP]
  251. EDIT
  252. \ 8086 Assembler   Register Definitions     11OCT83HHL
  253. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  254. \ 4 2 REGS   [SI+BX] [DI+BX] [SI+BP] [DI+BP]
  255. 2 3 reg [di+bp]
  256. ~UP
  257. CREATE ES
  258. EDIT
  259. \ 8086 Assembler   Register Definitions     11OCT83HHL
  260. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  261. \ 4 3 REGS   ES  CS  SS  DS
  262. 3 0 reg es
  263. ~UP
  264. CREATE CS
  265. EDIT
  266. \ 8086 Assembler   Register Definitions     11OCT83HHL
  267. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  268. \ 4 3 REGS   ES  CS  SS  DS
  269. 3 1 reg cs
  270. ~UP
  271. CREATE SS
  272. EDIT
  273. \ 8086 Assembler   Register Definitions     11OCT83HHL
  274. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  275. \ 4 3 REGS   ES  CS  SS  DS
  276. 3 2 reg ss
  277. ~UP
  278. CREATE DS
  279. EDIT
  280. \ 8086 Assembler   Register Definitions     11OCT83HHL
  281. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  282. \ 4 3 REGS   ES  CS  SS  DS
  283. 3 3 reg ds
  284. ~UP
  285. CREATE #
  286. EDIT
  287. \ 8086 Assembler   Register Definitions     11OCT83HHL
  288. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  289. \ 3 4 REGS   #   #)  S#)
  290. 4 0 reg #
  291. ~UP
  292. CREATE #)
  293. EDIT
  294. \ 8086 Assembler   Register Definitions     11OCT83HHL
  295. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  296. \ 3 4 REGS   #   #)  S#)
  297. 4 1 reg #)
  298. ~UP
  299. CREATE S#)
  300. EDIT
  301. \ 8086 Assembler   Register Definitions     11OCT83HHL
  302. \ : REGS   (  MODE N -- )   SWAP 0 DO  DUP I REG  LOOP  DROP ;
  303. \ 3 4 REGS   #   #)  S#)
  304. 4 2 reg s#)
  305. ~UP
  306. CREATE RP
  307. EDIT
  308. \ 8086 Assembler   Register Definitions     11OCT83HHL
  309.  BP  CONSTANT  RP     ( RETURN STACK POINTER )
  310. ~UP
  311. CREATE [RP]
  312. EDIT
  313. \ 8086 Assembler   Register Definitions     11OCT83HHL
  314. [BP] CONSTANT [RP]    ( RETURN STACK POINTER )
  315. ~UP
  316. CREATE IP
  317. EDIT
  318. \ 8086 Assembler   Register Definitions     11OCT83HHL
  319.  SI  CONSTANT  IP     ( INTERPRETER POINTER )
  320. ~UP
  321. CREATE [IP]
  322. EDIT
  323. \ 8086 Assembler   Register Definitions     11OCT83HHL
  324. [SI] CONSTANT [IP]    ( INTERPRETER POINTER )
  325. ~UP
  326. CREATE W
  327. EDIT
  328. \ 8086 Assembler   Register Definitions     11OCT83HHL
  329.  BX  CONSTANT  W      ( WORKING REGISTER )
  330. ~UP
  331. CREATE [W]
  332. EDIT
  333. \ 8086 Assembler   Register Definitions     11OCT83HHL
  334. [BX] CONSTANT [W]     ( WORKING REGISTER )
  335. ~UP
  336. CREATE MD
  337. EDIT
  338. \ Addressing Modes                                    16Oct83map
  339. 8 base !
  340. : MD   CREATE  1000 * ,  DOES>  @ SWAP 7000 AND = 0<>  ;
  341. ~UP
  342. CREATE R8?
  343. EDIT
  344. \ Addressing Modes                                    16Oct83map
  345. 0 MD R8?
  346. ~UP
  347. CREATE R16?
  348. EDIT
  349. \ Addressing Modes                                    16Oct83map
  350. 1 MD R16?
  351. ~UP
  352. CREATE MEM?
  353. EDIT
  354. \ Addressing Modes                                    16Oct83map
  355. 2 MD MEM?
  356. ~UP
  357. CREATE SEG?
  358. EDIT
  359. \ Addressing Modes                                    16Oct83map
  360. 3 MD SEG?
  361. ~UP
  362. CREATE #?
  363. EDIT
  364. \ Addressing Modes                                    16Oct83map
  365. 4 MD #?
  366. ~UP
  367. CREATE REG?
  368. EDIT
  369. \ Addressing Modes                                    16Oct83map
  370. 8 base !
  371. : REG?   (  n -- f )   7000 AND 2000 < 0<> ;
  372. ~UP
  373. CREATE BIG?
  374. EDIT
  375. \ Addressing Modes                                    16Oct83map
  376. 8 base !
  377. : BIG?   (  N -- F )   ABS -200 AND 0<>  ;
  378. ~UP
  379. CREATE RLOW
  380. EDIT
  381. \ Addressing Modes                                    16Oct83map
  382. 8 base !
  383. : RLOW   (  n1 -- n2 )    7 AND ;
  384. ~UP
  385. CREATE RMID
  386. EDIT
  387. \ Addressing Modes                                    16Oct83map
  388. 8 base !
  389. : RMID   (  n1 -- n2 )   70 AND ;
  390. ~UP
  391. CREATE SIZE
  392. EDIT
  393. \ Addressing Modes                                    16Oct83map
  394. VARIABLE SIZE   SIZE ON
  395. ~UP
  396. CREATE BYTE
  397. EDIT
  398. \ Addressing Modes                                    16Oct83map
  399. : BYTE   (  -- )   SIZE OFF ;
  400. ~UP
  401. CREATE OP,
  402. EDIT
  403. \ Addressing Modes                                    16Oct83map
  404. : OP,   (  N OP -- )   OR C,  ;
  405. ~UP
  406. CREATE W,
  407. EDIT
  408. \ Addressing Modes                                    16Oct83map
  409. : W,   ( OP MR -- )   R16? 1 AND OP,  ;
  410. ~UP
  411. CREATE SIZE,
  412. EDIT
  413. \ Addressing Modes                                    16Oct83map
  414. : SIZE,   ( OP -- OP' )   SIZE @ 1 AND OP,  ;
  415. ~UP
  416. CREATE ,/C,
  417. EDIT
  418. \ Addressing Modes                                    16Oct83map
  419. : ,/C,  (  n f -- )   IF  ,  ELSE  C,  THEN  ;
  420. ~UP
  421. CREATE RR,
  422. EDIT
  423. \ Addressing Modes                                    16Oct83map
  424. 8 base !
  425. : RR,   (  MR1 MR2 -- )   RMID SWAP RLOW OR 300 OP,  ;
  426. ~UP
  427. CREATE LOGICAL
  428. EDIT
  429. \ Addressing Modes                                    16Oct83map
  430. VARIABLE LOGICAL
  431. ~UP
  432. CREATE B/L?
  433. EDIT
  434. \ Addressing Modes                                    16Oct83map
  435. : B/L?   (  n -- f )   BIG? LOGICAL @ OR  ;
  436. ~UP
  437. CREATE MEM,
  438. EDIT
  439. \ Addressing                                          16Oct83map
  440. 8 base !
  441. : MEM,   (  DISP MR RMID -- )   OVER #) =
  442.    IF  RMID 6 OP, DROP ,
  443.    ELSE  RMID OVER RLOW OR -ROT [BP] = OVER 0= AND
  444.    IF  SWAP 100 OP, C,  ELSE  SWAP OVER BIG?
  445.    IF  200 OP, ,  ELSE  OVER 0=
  446.    IF  C, DROP  ELSE  100 OP, C,
  447.    THEN THEN THEN THEN  ;
  448. ~UP
  449. CREATE WMEM,
  450. EDIT
  451. \ Addressing                                          16Oct83map
  452. : WMEM,   (  DISP MEM REG OP -- )   OVER W, MEM,  ;
  453. ~UP
  454. CREATE R/M,
  455. EDIT
  456. \ Addressing                                          16Oct83map
  457. : R/M,   (  MR REG -- )
  458.    OVER REG? IF  RR,  ELSE  MEM,  THEN  ;
  459. ~UP
  460. CREATE WR/SM,
  461. EDIT
  462. \ Addressing                                          16Oct83map
  463. : WR/SM,   (  R/M R OP -- )   2 PICK DUP REG?
  464.    IF  W, RR,  ELSE  DROP SIZE, MEM,  THEN  SIZE ON  ;
  465. ~UP
  466. CREATE INTER
  467. EDIT
  468. \ Addressing                                          16Oct83map
  469. VARIABLE INTER
  470. ~UP
  471. CREATE FAR
  472. EDIT
  473. \ Addressing                                          16Oct83map
  474. : FAR    (  -- )   INTER ON  ;
  475. ~UP
  476. CREATE ?FAR
  477. EDIT
  478. \ Addressing                                          16Oct83map
  479. 8 base !
  480. : ?FAR   (  n1 -- n2 )   INTER @ IF  10 OR  THEN  INTER OFF ;
  481. ~UP
  482. CREATE 1MI
  483. EDIT
  484. \ Defining Words to Generate Op Codes                 08MAY84HHL
  485. : 1MI   CREATE  C,  DOES>  C@ C,  ;
  486. ~UP
  487. CREATE 2MI
  488. EDIT
  489. \ Defining Words to Generate Op Codes                 08MAY84HHL
  490. 8 base !
  491. : 2MI   CREATE  C,  DOES>  C@ C,  12 C,  ;
  492. ~UP
  493. CREATE 3MI
  494. EDIT
  495. \ Defining Words to Generate Op Codes                 08MAY84HHL
  496. 8 base !
  497. : 3MI   CREATE  C,  DOES>  C@ C,  HERE - 1-
  498.    DUP -200 177 WITHIN NOT ABORT" Branch out of Range" C,   ;
  499. ~UP
  500. CREATE 4MI
  501. EDIT
  502. \ Defining Words to Generate Op Codes                 08MAY84HHL
  503. : 4MI   CREATE  C,  DOES>  C@ C,  MEM,  ;
  504. ~UP
  505. CREATE 5MI
  506. EDIT
  507. \ Defining Words to Generate Op Codes                 08MAY84HHL
  508. : 5MI   CREATE  C,  DOES>  C@ SIZE,  SIZE ON ;
  509. ~UP
  510. CREATE 6MI
  511. EDIT
  512. \ Defining Words to Generate Op Codes                 08MAY84HHL
  513. : 6MI   CREATE  C,  DOES>  C@ SWAP W,  ;
  514. ~UP
  515. CREATE 7MI
  516. EDIT
  517. \ Defining Words to Generate Op Codes                 08MAY84HHL
  518. 8 base !
  519. : 7MI   CREATE  C,  DOES>  C@ 366 WR/SM, ;
  520. ~UP
  521. CREATE 8MI
  522. EDIT
  523. \ Defining Words to Generate Op Codes                 08MAY84HHL
  524. 8 base !
  525. : 8MI   CREATE  C,  DOES>  C@ SWAP R16? 1 AND OR  SWAP # =
  526.    IF  C, C,  ELSE  10 OR  C,  THEN  ;
  527. ~UP
  528. CREATE 9MI
  529. EDIT
  530. \ Defining Words to Generate Op Codes                 08MAY84HHL
  531. 8 base !
  532. : 9MI   CREATE  C,  DOES>  C@  OVER R16?
  533.    IF  100 OR SWAP RLOW OP,  ELSE  376 WR/SM,  THEN  ;
  534. ~UP
  535. CREATE 10MI
  536. EDIT
  537. \ Defining Words to Generate Op Codes                 08MAY84HHL
  538. 8 base !
  539. : 10MI  CREATE  C,  DOES>  C@ OVER CL =
  540.    IF  NIP 322  ELSE  320  THEN  WR/SM,  ;
  541. ~UP
  542. CREATE 11MI
  543. EDIT
  544. \ Defining Words to Generate Op Codes                 27JAN86GEB
  545. 8 base !
  546. : 11MI   CREATE  C,  C,  DOES>  OVER REG?
  547.   IF  377 C, C@ 1 AND
  548.     IF 340 ELSE 320 THEN SWAP RLOW OP,
  549.   ELSE OVER #) =  IF  NIP C@ INTER @
  550.      IF   1 AND IF  352  ELSE  232  THEN  C,  SWAP , ,
  551.      ELSE  SWAP HERE - 2- SWAP  2DUP 1 AND SWAP BIG? NOT AND
  552.        IF  2 OP, C,  ELSE  C,  1- ,  THEN  THEN
  553.    ELSE  377 C,  1+ C@ ?FAR  R/M,  THEN  THEN ;
  554. ~UP
  555. CREATE 12MI
  556. EDIT
  557. \ Defining Words to Generate Op Codes                 27JAN86GEB
  558. 8 base !
  559. : 12MI   CREATE  C, C, C,  DOES>  OVER REG?
  560.    IF  C@ SWAP RLOW OP,  ELSE  1+ OVER SEG?
  561.      IF  C@ RLOW SWAP RMID OP,
  562.      ELSE  COUNT SWAP C@ C,  MEM,   THEN THEN ;
  563. ~UP
  564. CREATE 13MI
  565. EDIT
  566. \ Defining Words to Generate Op Codes                 09Apr84map
  567. 8 base !
  568. : 13MI   CREATE  C, C,  DOES>  COUNT >R C@ LOGICAL !  DUP REG?
  569.    IF  OVER REG?
  570.      IF  R> OVER W, SWAP RR,  ELSE  OVER DUP MEM? SWAP #) = OR
  571.      IF  R> 2 OR WMEM,  ELSE  ( # ) NIP  DUP RLOW 0= ( ACC? )
  572.      IF  R> 4 OR OVER W, R16? ,/C,
  573.      ELSE  OVER B/L? OVER R16? 2DUP AND
  574.        -ROT 1 AND SWAP NOT 2 AND OR 200 OP,
  575.        SWAP RLOW 300 OR R> OP,  ,/C,
  576.      THEN  THEN  THEN
  577.    ELSE  ( MEM )  ROT DUP REG?
  578.      IF  R> WMEM,
  579.      ELSE  ( # ) DROP  2 PICK B/L? DUP NOT 2 AND 200 OR SIZE,
  580.        -ROT R> MEM,  SIZE @ AND ,/C,  SIZE ON
  581.    THEN  THEN  ;
  582. ~UP
  583. CREATE 14MI
  584. EDIT
  585. \ Defining Words to Generate Op Codes                 27JAN86GEB
  586. 8 base !
  587. : 14MI   CREATE  C,  DOES> C@
  588.    DUP ?FAR C,  1 AND 0= IF  ,  THEN ;
  589. ~UP
  590. CREATE TEST
  591. EDIT
  592. \ Instructions                                        14MAY84RKG
  593. 8 base !
  594. : TEST   (  source dest -- )   DUP REG?
  595.    IF  OVER REG?
  596.      IF  204 OVER W, SWAP RR,  ELSE  OVER DUP MEM? SWAP #) = OR
  597.      IF  204 WMEM,  ELSE  ( # ) NIP  DUP RLOW 0= ( ACC? )
  598.      IF  250 OVER W,
  599.      ELSE  366 OVER W,  DUP RLOW 300 OP,
  600.      THEN   R16? ,/C,  THEN  THEN
  601.    ELSE  ( MEM )  ROT DUP REG?
  602.      IF  204 WMEM,
  603.      ELSE  ( # ) DROP  366 SIZE,  0 MEM,  SIZE @ ,/C,  SIZE ON
  604.    THEN  THEN  ;
  605. ~UP
  606. CREATE ESC
  607. EDIT
  608. \ Instructions                                        16Oct83map
  609. 16 BASE !
  610. : ESC   (  source ext-opcode -- )   RLOW 0D8 OP, R/M,  ;
  611. ~UP
  612. CREATE INT
  613. EDIT
  614. \ Instructions                                        16Oct83map
  615. 16 BASE !
  616. : INT   (  N -- )   0CD C,  C,  ;
  617. ~UP
  618. CREATE SEG
  619. EDIT
  620. \ Instructions                                        16Oct83map
  621. 16 BASE !
  622. : SEG   (  SEG -- )   RMID 26 OP,  ;
  623. ~UP
  624. CREATE XCHG
  625. EDIT
  626. \ Instructions                                        16Oct83map
  627. 16 BASE !
  628. : XCHG   (  MR1 MR2 -- )   DUP REG?
  629.    IF  DUP AX =
  630.      IF  DROP RLOW 90 OP,  ELSE  OVER AX =
  631.      IF  NIP  RLOW 90 OP,  ELSE  86 WR/SM,  THEN  THEN
  632.    ELSE  ROT 86 WR/SM,  THEN  ;
  633. ~UP
  634. CREATE CS:
  635. EDIT
  636. \ Instructions                                        16Oct83map
  637. 16 BASE !
  638. : CS:   CS SEG ;
  639. ~UP
  640. CREATE DS:
  641. EDIT
  642. \ Instructions                                        16Oct83map
  643. 16 BASE !
  644. : DS:   DS SEG ;
  645. ~UP
  646. CREATE ES:
  647. EDIT
  648. \ Instructions                                        16Oct83map
  649. 16 BASE !
  650. : ES:   ES SEG ;
  651. ~UP
  652. CREATE SS:
  653. EDIT
  654. \ Instructions                                        16Oct83map
  655. 16 BASE !
  656. : SS:   SS SEG ;
  657. ~UP
  658. CREATE MOV
  659. EDIT
  660. \ Instructions                                        18APR83HHL
  661. 16 BASE !
  662. : MOV   (  S D -- )   DUP SEG?
  663.    IF  8E C, R/M,  ELSE  DUP REG?
  664.      IF  OVER #) = OVER RLOW 0= AND
  665.        IF  A0 SWAP W,   DROP   ,  ELSE  OVER SEG?
  666.        IF  SWAP 8C C, RR,  ELSE  OVER # =
  667.        IF  NIP DUP R16? SWAP RLOW OVER 8 AND OR B0 OP, ,/C,
  668.        ELSE  8A OVER W, R/M,  THEN THEN THEN
  669.      ELSE  ( MEM ) ROT DUP SEG?
  670.        IF  8C C, MEM,  ELSE  DUP # =
  671.        IF  DROP C6 SIZE, 0 MEM,  SIZE @ ,/C,
  672.        ELSE  OVER #) = OVER RLOW 0= AND
  673.        IF  A2 SWAP W,  DROP   ,   ELSE  88 OVER W, R/M,
  674.    THEN THEN THEN THEN THEN   SIZE ON  ;
  675. ~UP
  676. CREATE AAA
  677. EDIT
  678. \ Instructions                                        12Oct83map
  679. 16 BASE !
  680. 37  1MI AAA
  681. ~UP
  682. CREATE AAD
  683. EDIT
  684. \ Instructions                                        12Oct83map
  685. 16 BASE !
  686. D5  2MI AAD
  687. ~UP
  688. CREATE AAM
  689. EDIT
  690. \ Instructions                                        12Oct83map
  691. 16 BASE !
  692. D4  2MI AAM
  693. ~UP
  694. CREATE AAS
  695. EDIT
  696. \ Instructions                                        12Oct83map
  697. 16 BASE !
  698. 3F  1MI AAS
  699. ~UP
  700. CREATE ADC
  701. EDIT
  702. \ Instructions                                        12Oct83map
  703. 16 BASE !
  704. 0 10 13MI ADC
  705. ~UP
  706. CREATE ADD
  707. EDIT
  708. \ Instructions                                        12Oct83map
  709. 16 BASE !
  710. 0 00 13MI ADD
  711. ~UP
  712. CREATE ADD
  713. EDIT
  714. \ Instructions                                        12Oct83map
  715. 16 BASE !
  716. 0 00 13MI ADD
  717. ~UP
  718. CREATE AND
  719. EDIT
  720. \ Instructions                                        12Oct83map
  721. 16 BASE !
  722. 2 20 13MI AND
  723. ~UP
  724. CREATE CALL
  725. EDIT
  726. \ Instructions                                        12Oct83map
  727. 16 BASE !
  728. 10 E8 11MI CALL
  729. ~UP
  730. CREATE CBW
  731. EDIT
  732. \ Instructions                                        12Oct83map
  733. 16 BASE !
  734. 98  1MI CBW
  735. ~UP
  736. CREATE CLC
  737. EDIT
  738. \ Instructions                                        12Oct83map
  739. 16 BASE !
  740. F8  1MI CLC
  741. ~UP
  742. CREATE CLD
  743. EDIT
  744. \ Instructions                                        12Oct83map
  745. 16 BASE !
  746. FC  1MI CLD
  747. ~UP
  748. CREATE CLI
  749. EDIT
  750. \ Instructions                                        12Oct83map
  751. 16 BASE !
  752. FA  1MI CLI
  753. ~UP
  754. CREATE CMC
  755. EDIT
  756. \ Instructions                                        12Oct83map
  757. 16 BASE !
  758. F5  1MI CMC
  759. ~UP
  760. CREATE CMP
  761. EDIT
  762. \ Instructions                                        12Oct83map
  763. 16 BASE !
  764. 0 38 13MI CMP
  765. ~UP
  766. CREATE CMPS
  767. EDIT
  768. \ Instructions                                        12Oct83map
  769. 16 BASE !
  770. A6  5MI CMPS
  771. ~UP
  772. CREATE CWD
  773. EDIT
  774. \ Instructions                                        12Oct83map
  775. 16 BASE !
  776. 99  1MI CWD
  777. ~UP
  778. CREATE DAA
  779. EDIT
  780. \ Instructions                                        12Oct83map
  781. 16 BASE !
  782. 27  1MI DAA
  783. ~UP
  784. CREATE DAS
  785. EDIT
  786. \ Instructions                                        12Oct83map
  787. 16 BASE !
  788. 2F  1MI DAS
  789. ~UP
  790. CREATE DEC
  791. EDIT
  792. \ Instructions                                        12Oct83map
  793. 16 BASE !
  794. 08  9MI DEC
  795. ~UP
  796. CREATE DIV
  797. EDIT
  798. \ Instructions                                        12Oct83map
  799. 16 BASE !
  800. 30  7MI DIV
  801. ~UP
  802. CREATE HLT
  803. EDIT
  804. \ Instructions                                        12Oct83map
  805. 16 BASE !
  806. F4  1MI HLT
  807. ~UP
  808. CREATE IDIV
  809. EDIT
  810. \ Instructions                                        12Oct83map
  811. 16 BASE !
  812. 38  7MI IDIV
  813. ~UP
  814. CREATE IMUL
  815. EDIT
  816. \ Instructions                                        12Oct83map
  817. 16 BASE !
  818. 28  7MI IMUL
  819. ~UP
  820. CREATE IN
  821. EDIT
  822. \ Instructions                                        12Oct83map
  823. 16 BASE !
  824. E4  8MI IN
  825. ~UP
  826. CREATE INC
  827. EDIT
  828. \ Instructions                                        12Oct83map
  829. 16 BASE !
  830. 00  9MI INC
  831. ~UP
  832. CREATE INTO
  833. EDIT
  834. \ Instructions                                        12Oct83map
  835. 16 BASE !
  836. 0CE  1MI INTO
  837. ~UP
  838. CREATE IRET
  839. EDIT
  840. \ Instructions                                        12Oct83map
  841. 16 BASE !
  842. 0CF  1MI IRET
  843. ~UP
  844. CREATE JA
  845. EDIT
  846. \ Instructions                                        12Oct83map
  847. 16 BASE !
  848. 77  3MI JA
  849. ~UP
  850. CREATE JAE
  851. EDIT
  852. \ Instructions                                        12Oct83map
  853. 16 BASE !
  854. 73  3MI JAE
  855. ~UP
  856. CREATE JB
  857. EDIT
  858. \ Instructions                                        12Oct83map
  859. 16 BASE !
  860. 72  3MI JB
  861. ~UP
  862. CREATE JBE
  863. EDIT
  864. \ Instructions                                        12Oct83map
  865. 16 BASE !
  866. 76  3MI JBE
  867. ~UP
  868. CREATE JCXZ
  869. EDIT
  870. \ Instructions                                        12Oct83map
  871. 16 BASE !
  872. E3  3MI JCXZ
  873. ~UP
  874. CREATE JE
  875. EDIT
  876. \ Instructions                                        12Oct83map
  877. 16 BASE !
  878. 74  3MI JE
  879. ~UP
  880. CREATE JG
  881. EDIT
  882. \ Instructions                                        12Oct83map
  883. 16 BASE !
  884. 7F  3MI JG
  885. ~UP
  886. CREATE JGE
  887. EDIT
  888. \ Instructions                                        12Oct83map
  889. 16 BASE !
  890. 7D  3MI JGE
  891. ~UP
  892. CREATE JL
  893. EDIT
  894. \ Instructions                                        12Oct83map
  895. 16 BASE !
  896. 7C  3MI JL
  897. ~UP
  898. CREATE JLE
  899. EDIT
  900. \ Instructions                                        12Oct83map
  901. 16 BASE !
  902. 7E  3MI JLE
  903. ~UP
  904. CREATE JMP
  905. EDIT
  906. \ Instructions                                        12Oct83map
  907. 16 BASE !
  908. 20 E9 11MI JMP
  909. ~UP
  910. CREATE JNE
  911. EDIT
  912. \ Instructions                                        12Oct83map
  913. 16 BASE !
  914. 75  3MI JNE
  915. ~UP
  916. CREATE JNO
  917. EDIT
  918. \ Instructions                                        12Oct83map
  919. 16 BASE !
  920. 71  3MI JNO
  921. ~UP
  922. CREATE JNS
  923. EDIT
  924. \ Instructions                                        12Oct83map
  925. 16 BASE !
  926. 79  3MI JNS
  927. ~UP
  928. CREATE JO
  929. EDIT
  930. \ Instructions                                        12Oct83map
  931. 16 BASE !
  932. 70  3MI JO
  933. ~UP
  934. CREATE JPE
  935. EDIT
  936. \ Instructions                                        12Oct83map
  937. 16 BASE !
  938. 7A  3MI JPE
  939. ~UP
  940. CREATE JPO
  941. EDIT
  942. \ Instructions                                        12Oct83map
  943. 16 BASE !
  944. 7B  3MI JPO
  945. ~UP
  946. CREATE JS
  947. EDIT
  948. \ Instructions                                        12Oct83map
  949. 16 BASE !
  950. 78  3MI JS
  951. ~UP
  952. CREATE LAHF
  953. EDIT
  954. \ Instructions                                        12Oct83map
  955. 16 BASE !
  956. 9F  1MI LAHF
  957. ~UP
  958. CREATE LDS
  959. EDIT
  960. \ Instructions                                        12Oct83map
  961. 16 BASE !
  962. C5  4MI LDS
  963. ~UP
  964. CREATE LEA
  965. EDIT
  966. \ Instructions                                        12Oct83map
  967. 16 BASE !
  968. 8D  4MI LEA
  969. ~UP
  970. CREATE LES
  971. EDIT
  972. \ Instructions                                        12Oct83map
  973. 16 BASE !
  974. C4  4MI LES
  975. ~UP
  976. CREATE LOCK
  977. EDIT
  978. \ Instructions                                        12Oct83map
  979. 16 BASE !
  980. F0  1MI LOCK
  981. ~UP
  982. CREATE LODS
  983. EDIT
  984. \ Instructions                                        12Oct83map
  985. 16 BASE !
  986. 0AC  6MI LODS
  987. ~UP
  988. CREATE LOOP
  989. EDIT
  990. \ Instructions                                        12Oct83map
  991. 16 BASE !
  992. E2  3MI LOOP
  993. ~UP
  994. CREATE LOOPE
  995. EDIT
  996. \ Instructions                                        12Oct83map
  997. 16 BASE !
  998. E1  3MI LOOPE
  999. ~UP
  1000. CREATE LOOPNE
  1001. EDIT
  1002. \ Instructions                                        12Oct83map
  1003. 16 BASE !
  1004. E0  3MI LOOPNE
  1005. ~UP
  1006. CREATE MOVS
  1007. EDIT
  1008. \ Instructions                                        12Apr84map
  1009. 16 BASE !
  1010. 0A4  5MI MOVS
  1011. ~UP
  1012. CREATE MUL
  1013. EDIT
  1014. \ Instructions                                        12Apr84map
  1015. 16 BASE !
  1016. 20  7MI MUL
  1017. ~UP
  1018. CREATE NEG
  1019. EDIT
  1020. \ Instructions                                        12Apr84map
  1021. 16 BASE !
  1022. 18  7MI NEG
  1023. ~UP
  1024. CREATE NOP
  1025. EDIT
  1026. \ Instructions                                        12Apr84map
  1027. 16 BASE !
  1028.  90  1MI NOP
  1029. ~UP
  1030. CREATE NOT
  1031. EDIT
  1032. \ Instructions                                        12Apr84map
  1033. 16 BASE !
  1034. 10  7MI NOT
  1035. ~UP
  1036. CREATE OR
  1037. EDIT
  1038. \ Instructions                                        12Apr84map
  1039. 16 BASE !
  1040. 2 08 13MI OR
  1041. ~UP
  1042. CREATE OUT
  1043. EDIT
  1044. \ Instructions                                        12Apr84map
  1045. 16 BASE !
  1046. E6  8MI OUT
  1047. ~UP
  1048. CREATE POP
  1049. EDIT
  1050. \ Instructions                                        12Apr84map
  1051. 16 base !
  1052. 8F 07 58 12MI POP
  1053. ~UP
  1054. CREATE POPF
  1055. EDIT
  1056. \ Instructions                                        12Apr84map
  1057. 16 base !
  1058. 9D  1MI POPF
  1059. ~UP
  1060. CREATE PUSH
  1061. EDIT
  1062. \ Instructions                                        12Apr84map
  1063. 16 base !
  1064. 0FF 36 50 12MI PUSH
  1065. ~UP
  1066. CREATE PUSHF
  1067. EDIT
  1068. \ Instructions                                        12Apr84map
  1069. 16 base !
  1070. 9C  1MI PUSHF
  1071. ~UP
  1072. CREATE RCL
  1073. EDIT
  1074. \ Instructions                                        12Apr84map
  1075. 16 base !
  1076.  10 10MI RCL
  1077. ~UP
  1078. CREATE RCR
  1079. EDIT
  1080. \ Instructions                                        12Apr84map
  1081. 16 base !
  1082. 18 10MI RCR
  1083. ~UP
  1084. CREATE REP
  1085. EDIT
  1086. \ Instructions                                        12Apr84map
  1087. 16 base !
  1088.  F2  1MI REP
  1089. ~UP
  1090. CREATE REPNZ
  1091. EDIT
  1092. \ Instructions                                        12Apr84map
  1093. 16 base !
  1094. F2  1MI REPNZ
  1095. ~UP
  1096. CREATE REPZ
  1097. EDIT
  1098. \ Instructions                                        12Apr84map
  1099. 16 base !
  1100. F3  1MI REPZ
  1101. ~UP
  1102. CREATE RET
  1103. EDIT
  1104. \ Instructions                                        12Apr84map
  1105. 16 base !
  1106.  C3 14MI RET
  1107. ~UP
  1108. CREATE ROL
  1109. EDIT
  1110. \ Instructions                                        12Apr84map
  1111. 16 base !
  1112. 00 10MI ROL
  1113. ~UP
  1114. CREATE ROR
  1115. EDIT
  1116. \ Instructions                                        12Apr84map
  1117. 16 base !
  1118. 8 10MI ROR
  1119. ~UP
  1120. CREATE SAHF
  1121. EDIT
  1122. \ Instructions                                        12Apr84map
  1123. 16 base !
  1124. 9E  1MI SAHF
  1125. ~UP
  1126. CREATE SAR
  1127. EDIT
  1128. \ Instructions                                        12Apr84map
  1129. 16 base !
  1130.  38 10MI SAR
  1131. ~UP
  1132. CREATE SBB
  1133. EDIT
  1134. \ Instructions                                        12Apr84map
  1135. 16 base !
  1136. 0 18 13MI SBB
  1137. ~UP
  1138. CREATE SCAS
  1139. EDIT
  1140. \ Instructions                                        12Apr84map
  1141. 16 base !
  1142. 0AE  5MI SCAS
  1143. ~UP
  1144. CREATE SHL
  1145. EDIT
  1146. \ Instructions                                        12Apr84map
  1147. 16 base !
  1148. 20 10MI SHL
  1149. ~UP
  1150. CREATE SHR
  1151. EDIT
  1152. \ Instructions                                        12Apr84map
  1153. 16 base !
  1154. 28 10MI SHR
  1155. ~UP
  1156. CREATE STC
  1157. EDIT
  1158. \ Instructions                                        12Apr84map
  1159. 16 base !
  1160. F9  1MI STC
  1161. ~UP
  1162. CREATE STD
  1163. EDIT
  1164. \ Instructions                                        12Apr84map
  1165. 16 base !
  1166. FD  1MI STD
  1167. ~UP
  1168. CREATE STI
  1169. EDIT
  1170. \ Instructions                                        12Apr84map
  1171. 16 base !
  1172.  FB  1MI STI
  1173. ~UP
  1174. CREATE STOS
  1175. EDIT
  1176. \ Instructions                                        12Apr84map
  1177. 16 base !
  1178. 0AA  6MI STOS
  1179. ~UP
  1180. CREATE SUB
  1181. EDIT
  1182. \ Instructions                                        12Apr84map
  1183. 16 base !
  1184. 0 28 13MI SUB
  1185. ~UP
  1186. CREATE WAIT
  1187. EDIT
  1188. \ Instructions                                        12Apr84map
  1189. 16 base !
  1190.  9B  1MI WAIT
  1191. ~UP
  1192. CREATE XLAT
  1193. EDIT
  1194. \ Instructions                                        12Apr84map
  1195. 16 base !
  1196. D7  1MI XLAT
  1197. ~UP
  1198. CREATE XOR
  1199. EDIT
  1200. \ Instructions                                        12Apr84map
  1201. 16 base !
  1202. 2 30 13MI XOR
  1203. ~UP
  1204. CREATE +RET
  1205. EDIT
  1206. \ Instructions                                        12Apr84map
  1207. 16 base !
  1208.  C2 14MI +RET
  1209. ~UP
  1210. EDIT
  1211. : 8086 ( Swap hi/lo halfs)
  1212.  
  1213. [                           \ Dive straight into assembly - turn compiler off
  1214.   0 [bp] ax     mov         \ Move [bp+0] to ax
  1215.   ax     2 [bp] xchg        \ Exchange ax and [bp+2]
  1216.   ax     0 [bp] mov         \ Move ax to [bp+0]
  1217. ]                           \ note mixing FORTH and ASSEMBLY - turn compiler on
  1218.  
  1219. dup  .                      \ Print the result
  1220.  
  1221. ;
  1222. ~UP
  1223. EDIT
  1224. ~UP
  1225. ABORT